package controller;

import model.AangebodenCursus;
import model.Cursus;
import model.Lector;
import model.Lokaal;
import model.container.AangebodenCursussen;
import model.container.Cursussen;
import model.container.CursussenException;
import model.container.Lectoren;
import utils.TijdsMoment1Dag;

public class PlanningController {
	public AangebodenCursussen geplandeCursussen;
	public Cursussen cursusAanbod;
	public Lectoren lectorAanbod;

	public PlanningController(AangebodenCursussen aangebodenCursussen, Cursussen CursusAanbod, Lectoren LectorAanbod) {
		this.geplandeCursussen = aangebodenCursussen;
		this.cursusAanbod = CursusAanbod;
		this.lectorAanbod = LectorAanbod;
	}

	/**
	 * * Laden van combobox cursussen
	 * 
	 * @return String[]
	 */
	public String[] getCursussen() {
		return cursusAanbod.getCursussen();
	}

	/**
	 * Laden van combobox lectoren
	 * 
	 * @return String[]
	 */
	public String[] getLectoren() {
		return lectorAanbod.getLectoren();
	}

	/**
	 * Laden van combobox lokalen
	 * 
	 * @return String[]
	 */
	public String[] getLokalen() {
		String[] lokalenAlsString = new String[Lokaal.values().length];
		int index = 0;
		for (Lokaal lok : Lokaal.values()) {
			lokalenAlsString[index] = lok.toString();
			index++;
		}
		return lokalenAlsString;
	}

	/**
	 * Laden van geplandeCursussen
	 * 
	 * @return StringBuffer
	 */
	public String getGeplandeCursussen(String cursusnaam) {
		String cursusString = geplandeCursussen.getCursussenPerVak(cursusnaam).toString();
		return cursusString;
	}

	/**
	 * Laden van voorkeurLectoren
	 * 
	 * @return StringBuffer
	 */
	public String getvoorkeurLectoren(String cursusnaam) {
		String cursusString = lectorAanbod.getLectorByPreferredCourse(cursusnaam).toString();
		return cursusString;
	}

	/**
	 * Registreren van geplande cursus
	 */
	public void registreerCursus(String cursusNaam, String lectorNaam, String lokaalNaam, String Lesdag,
			String tijdstip, String aantalPlaatsen, String lesDuur) {
		Cursus tempCursus = new Cursus();
		Lector tempLector = new Lector();
		Lokaal tempLokaal = Lokaal.valueOf(lokaalNaam);
		String[] tijdStip = tijdstip.split("\\.");
		int startUur = Integer.parseInt(tijdStip[0]);
		int startMin = Integer.parseInt(tijdStip[1]);
		int plaatsen = Integer.parseInt(aantalPlaatsen);
		int minuten = Integer.parseInt(lesDuur);
		for (Cursus c : cursusAanbod) {
			if (c.getCursusNaam().equalsIgnoreCase(cursusNaam)) {
				tempCursus = c.clone();
			}
		}
		for (Lector l : lectorAanbod) {
			if (l.getLectorNaam().equalsIgnoreCase(lectorNaam)) {
				tempLector = l.clone();
			}
		}
		// aanmaken nieuwe aangebodenCursus
		AangebodenCursus tePlannenCursus = new AangebodenCursus(tempCursus, plaatsen, tempLector, tempLokaal,
				new TijdsMoment1Dag(Lesdag, startUur, startMin, minuten));

		// Registreren van cursus
		try {
			geplandeCursussen.add(tePlannenCursus);
		} catch (CloneNotSupportedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (CursussenException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
